\subsection{{\quorum}切片}

在一个共识协议中，节点交换消息来对关于{\slot}的陈述进行断言。我们假设这些断言无法被伪造——如果节点通过公钥命名并且数字签名了这些消息那么这是可以保证的。当一个节点侦听到足够多的节点断言了某个陈述之后，它将假定不会有工作节点否定这一陈述。我们称这样的一个足够的集合为\textbf{{\quorum}切片}，或简称\textbf{切片}。为了允许在节点失败的情形下系统仍然能够推进，一个节点可能有多个切片，它的任意一个切片都足够让它相信某个陈述。从较高层次来看，一个FBA系统由松散的节点邦联组成，其中的每个节点包含一个或多个切片。更形式化地讲：

\begin{definition}[FBAS]
	一个联邦拜占庭一致性系统，或简称\textit{FBAS}，是一个二元组$\langle\mybm{V}, \mybm{Q}\rangle$，它包含节点集合$\mybm{V}$和{\quorum}函数$\mybm{Q}:\mybm{V}\rightarrow2^{2^{\mybm{V}}}\backslash\left\{\emptyset\right\}$，后者用于指定每个节点的一个或多个切片，这里一个节点属于所有它自己的切片——即，$\forall v\in\mybm{Q},\forall q\in{\mybm{Q}(v)},v\in q$(注意$2^X$指的是$X$的幂集)。
\end{definition}

\begin{definition}[\quorum]
	FBAS$\langle\mybm{V},\mybm{Q}\rangle$中的节点集合$U\subseteq\mybm{V}$是一个\textbf{\quorum}当且仅当$U\neq \emptyset$且$U$包含每个节点的一个切片——即，$\forall v\in U, \exists q \in \mybm{Q}(v), s.t. q\subseteq U$。
\end{definition}

\begin{figure}
\centering
\begin{tikzpicture}
\tikzset{scale=1.5}
\node[node] (v1) {$v_1$};
\node[node] (v2) at (-1,1) {$v_2$};
\node[node] (v3) at (1,1) {$v_3$};
\node[node] (v4) at (0,2) {$v_4$};
\draw[transition] (v1) -- (v2);
\draw[transition] (v1) -- (v3);
\draw[transition,<->] (v2) -- (v3);
\draw[transition,<->] (v2) -- (v4);
\draw[transition,<->] (v3) -- (v4);
\node[anchor=west, text width=4cm, font=\small,overlay] at (1.5,1) {
  $\Q{v_1}=\{\{v_1, v_2, v_3\}\}$ \\[1ex]
  $\Q{v_2}=\Q{v_3}=\Q{v_4}=\{\{v_2, v_3, v_4\}\}$
};
\end{tikzpicture}\\
\caption{不含$v_4$的$v_1$的{\quorum}切片不是一个{\quorum}}
\label{fig:slice-vs-quorum}
\end{figure}

{\quorum}是足够达成一致的节点集合。切片是说服某一特定节点认可的{\quorum}子集。一个{\quorum}切片可能小于{\quorum}。考虑图\ref{fig:slice-vs-quorum}中的四节点系统，每个节点包含单一切片而箭头指向切片中的其它成员。节点$v_1$的切片$\left\{v_1,v_2,v_3\right\}$足以说服$v_1$认可。但是$v_2$和$v_3$的切片包含$v_4$，这意味着$v_2$和$v_3$都不能在没有$v_4$同意的情况下断言某个陈述。因而，没有$v_4$的参与就不可能达成一致，而唯一的包含$v_1$的{\quorum}是所有节点的集合$\left\{v_1,v_2,v_3,v_4\right\}$。

传统非联邦共识要求所有的节点接受相同的切片，即$\forall v_1, v_2, \mybm{Q}(v_1)=\mybm{Q}(v_2)$。因为任意的切片都足够使得所有的节点相信所有节点的某一个陈述，中心化系统不加区分切片和{\quorum}。缺点在于成员关系和{\quorum}必须事先规定好，妨碍了开放式成员关系和去中心化控制。传统的系统，例如PBFT~\cite{Castro:1999:PBFT}，通常有$3f+1$个节点，它们中的任意$2f+1$个节点组成一个{\quorum}。这里$f$是拜占庭错误的最大值——意味着节点的随意行为都能保证系统能够存活。

本文中介绍的FBA一般化了中心化共识以使得它可以容纳更广泛的环境。FBA的关键不同在于每个节点选择它自己的{\quorum}切片集合$\mybm{Q}(v)$。从而系统范围内的{\quorum}由每个节点的独立决策产生。节点可以根据任意准则选择切片，例如节点的信誉或财务安排。在一些环境下，可能对任何节点来说记录整个系统的所有节点集合${\mybm{V}}$是不现实的，然而仍然可以达成共识。